package com.kexun;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class ArrayQuChong {


    //数组去重 肯定要创建新数组  因为数组一旦创建,数组的长度是确定的
    public static void main(String[] args) {

        int [] arr={1,2,3,2,2,4,5,7,6,9,8};
        Object[] objects = oneClear(arr);

        //遍历数组
        System.out.println(Arrays.toString(objects));
    }



 public static Object[] oneClear(int[] arr){

        //hashset是无序的 ,但是包装类型输出有序

     /*HashSet的底层用哈希散列表来存储对象（默认长度为16的数组），
假如：

Set set=new HashSet();
set.add(obj);
内部存储过程为:定义h=obj.hashCode,得到obj对象的哈希码h，
再对h进行hash散列运算，对数组长度进行求余，假如长度为16，则返回一个0-15之间的值，
然后这个值就是存在HashSet数组中的下标。如果下标位置没有对象（不起冲突），则把obj加到该位置；
如果已近有对象（起冲突），则用equals判断两对象是否相等，相等则舍弃obj，不相等，则把obj以节点的方式加在该对象下面。*/
        Set set = new HashSet();
        for(int i=0;i<arr.length;i++){
        set.add(arr[i]);
    }
        //集合转为数组
        return set.toArray();
    }
}
